﻿#include <iostream>
#include <vector>
#include <cstring>  // 用于memset

using namespace std;

// 判断能否分割出和为target的子集
bool canDivide(const vector<int>& stones, int target) {
    vector<bool> dp(target + 1, false);
    dp[0] = true;  // 初始状态，和为0是可能的
    for (int stone : stones)// 遍历每个石头 
    {
        for (int j = target; j >= stone; j--) {
            dp[j] = dp[j] || dp[j - stone];  // 通过当前石头更新可达状态
        }
    }
    return dp[target];  // 返回能否凑出目标值
}

int main() {
    int n;
    cin >> n;
    vector<int> stones(n);
    int sum = 0;
    for (int i = 0; i < n; i++)
    {
        cin >> stones[i];
        sum += stones[i];
    }
        if (sum % 2 != 0) {
        cout << "no" << endl;
    }
    else {
        int target = sum / 2;
        if (canDivide(stones, target)) {
            cout << "yes" << endl;
        }
        else {
            cout << "no" << endl;
        }
    }
    return 0;
}